home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / comms / other / ums / developer / m2 / umsd.def next >
Text File  |  1999-06-14  |  22KB  |  549 lines

  1. DEFINITION MODULE UmsD;
  2. (*$ Implementation:=FALSE LargeVars:=FALSE *)
  3.  
  4.  
  5. IMPORT u:UtilityD,s:SYSTEM;
  6.  
  7. TYPE
  8.     (* user status-bits *)
  9.  
  10.     UserStatusFlags      = (us0,us1,us2,us3,
  11.       archive,      (* msg should be archived, don't delete *)
  12.       junk,         (* negative selection, inheritance suggested *)
  13.       postPoned,    (* to be read again, (but not now) *)
  14.       selected,     (* positive selection, inheritance suggested *)
  15.       Old,          (* user has already read this Message *)
  16.       WriteAccess,  (* user may change or delete this message *)
  17.       ReadAccess,   (* user may read this message *)
  18.       ViewAccess,   (* user may read the header of this message *)
  19.       Owner,        (* user 'owns' (wrote) this message *)
  20.       us13,us14,
  21.       filtered,     (* msg has been processed by filter,
  22.                        'selected' and 'junk' have been properly set *)
  23.       us16,us17,us18,us19,us20,us21,us22,us23,
  24.       us24,us25,us26,us27,us28,us29,us30,us31);
  25.  
  26.     UserStatusFlagSet    = SET OF UserStatusFlags;
  27.  
  28.  
  29.     (* global status-bits *)
  30.  
  31.     GlobalStatusFlags    = (
  32.       Deleted,      (* msg is really deleted *)
  33.       Expired,      (* msg has expired and may be deleted *)
  34.       Exported,     (* msg has been exported *)
  35.       Orphan,       (* msg could not be exported *)
  36.       Link,         (* within a ring of linked msgs *)
  37.       HardLink,     (* link is hardLink *)
  38.       Parked,       (* msg is "parked", i.e. must not (yet) be exported *)
  39.       HasFile,      (* msg has an attached file (tempFilename) *)
  40.  
  41.  
  42.       gs8,gs9,gs10,gs11,gs12,gs13,gs14,gs15,gs16,gs17,gs18,gs19,
  43.       gs20,gs21,gs22,gs23,gs24,gs25,gs26,gs27,gs28,gs29,gs30,gs31);
  44.  
  45.     GlobalStatusFlagSet  = SET OF GlobalStatusFlags;
  46.  
  47.  
  48.  
  49. CONST
  50.     umsName               = "ums.library";
  51.     NumFields             = 128;
  52.  
  53.     (* actions for ServerControl() *)
  54.  
  55.     CleanUp               = 1;
  56.     Flush                 = 2;
  57.     Quit                  = 3;
  58.     QuitForce             = 4;
  59.     Ping                  = 5;
  60.     LockCfg               = 6;
  61.     UnlockCfg             = 7;
  62.  
  63.     ProtectedUserFlags    = UserStatusFlagSet{WriteAccess,ReadAccess,
  64.                                               ViewAccess,Owner};
  65.     ProtectedGlobalFlags  = GlobalStatusFlagSet{Deleted,Exported,Orphan,
  66.                                                 Link,HardLink,HasFile};
  67.     Read                  = UserStatusFlagSet{Old};
  68.  
  69.  
  70.  
  71. TYPE
  72.     Account         = LONGINT;
  73.     MsgNum          = LONGINT;
  74.     Error           = LONGINT;
  75.     STRPTR          = POINTER TO ARRAY[0..MAX(LONGINT) - 1] OF CHAR;
  76.  
  77.     MsgTextFields   = ARRAY[0..NumFields - 1] OF STRPTR;
  78.     MessageInfo     = RECORD
  79.                         hdrLen      : LONGINT;
  80.                         txtLen      : LONGINT;
  81.                         date        : LONGINT;
  82.                         up, dn,
  83.                         lt, rt      : MsgNum;
  84.                         globalStat  : GlobalStatusFlagSet;
  85.                         userStat    : UserStatusFlagSet;
  86.                         loginStat   : s.LONGSET;
  87.                         hardLink    : MsgNum;
  88.                         softLink    : MsgNum;
  89.  
  90.                         (* V11 extension, only filled by tagRExtMsgInfo *)
  91.                         cDate       : LONGINT;
  92.                         reserved    : ARRAY[0..2] OF LONGINT;
  93.                    END; (*of RECORD*)
  94.  
  95.  
  96. CONST
  97.  
  98.    (* enumeration of fields in an UMS-message *)
  99.  
  100.    msgText                   =   0;
  101.    fromName                  =   1;
  102.    fromAddr                  =   2;
  103.    toName                    =   3;
  104.    toAddr                    =   4;
  105.    msgID                     =   5;
  106.    creationDate              =   6;
  107.    receiveDate               =   7;
  108.    refID                     =   8;
  109.    group                     =   9;
  110.    subject                   =  10;
  111.    attributes                =  11;
  112.    comments                  =  12;
  113.    organization              =  13;
  114.    distribution              =  14;
  115.    folder                    =  15;
  116.    fidoID                    =  16;
  117.    mausID                    =  17;
  118.    replyGroup                =  18;
  119.    replyName                 =  19;
  120.    replyAddr                 =  20;
  121.    logicalToName             =  21;
  122.    logicalToAddr             =  22;
  123.    fileName                  =  23;
  124.    rfcMsgNum                 =  24;
  125.  
  126.    fidoText                  =  32;
  127.    errorText                 =  33;
  128.    newsreader                =  34;
  129.    rfcAttr                   =  35;
  130.    ftnAttr                   =  36;
  131.    zerAttr                   =  37;
  132.    mausAttr                  =  38;
  133.  
  134.    tempFileName              = 127;
  135.  
  136. (*** Errors ***)
  137.  
  138. CONST
  139.   ok                =  0;
  140.   unknown           =  1;
  141.  
  142.   noSubject         = 100;
  143.   forbiddenCode     = 101;
  144.   noWriteAccess     = 102;
  145.   noReader          = 103;
  146.   noExporter        = 104;
  147.   badLink           = 105;
  148.   noWork            = 106;
  149.   noSysop           = 107;
  150.   badChange         = 108;
  151.   groupForm         = 109;
  152.   tooBig            = 110;
  153.   notRunning        = 111;
  154.   noImportAcc       = 112;
  155.   noFromName        = 113;
  156.   noToName          = 114;
  157.   cfgLocked         = 115;
  158.   noHardlinks       = 116;
  159.  
  160.   dupe              = 200;
  161.   noReadAccess      = 201;
  162.   noViewAccess      = 202;
  163.   msgCorrupted      = 203;
  164.   noHdrSpace        = 204;
  165.   noSuchMsg         = 205;
  166.   badName           = 206;
  167.   badTag            = 207;
  168.   missingTag        = 208;
  169.   noSuchUser        = 209;
  170.   notFound          = 210;
  171.   autoBounce        = 211;
  172.   msgDeleted        = 212;
  173.   noNetAccess       = 213;
  174.   badPattern        = 214;
  175.   badVarname        = 215;
  176.   fsFull            = 216;
  177.   noMsgMem          = 217;
  178.   missingIndex      = 218;
  179.   mxTags            = 219;
  180.   userExists        = 220;
  181.   noSuchAlias       = 221;
  182.   suicide           = 222;
  183.   exeErr            = 223;
  184.  
  185.   serverTerminated  = 300;
  186.   cantWrite         = 301;
  187.   cantRead          = 302;
  188.   wrongMsgPtr       = 303;
  189.   serverNotFree     = 304;
  190.   idCountProb       = 305;
  191.   noLogin           = 306;
  192.   wrongServer       = 307;
  193.   noMem             = 308;
  194.   wrongTask         = 309;
  195.  
  196.   tcpError          = 400;
  197.  
  198.   (* tag-values *)
  199.  
  200.   typeSTRPTR        = 2000H;
  201.   typeVARPAR        = 4000H;
  202.  
  203.  
  204.   (** tags for WriteMsg() **)
  205.  
  206.   (*  add 'typeVARPAR' for ReadMsg()  *)
  207.   (*  no 'typeVARPAR' for WriteMsg()  *)
  208.  
  209.   tagMsgNum         =  1 + u.tagUser;
  210.  
  211.   tagMsgDate        =  4 + u.tagUser;
  212.                            (* don't usually use when writing!      *)
  213.                            (* Using tagMsgDate with WriteUMSMsg()  *)
  214.                            (* has a very special meaning.          *)
  215.   tagChainUp        =  7 + u.tagUser;
  216.   tagHardLink       = 14 + u.tagUser;
  217.   tagSoftLink       = 15 + u.tagUser;
  218.   tagMsgCDate       = 16 + u.tagUser;
  219.  
  220.   tagAutoBounce     = 65 + u.tagUser;
  221.                            (* when writing:                                *)
  222.                            (* data # 0: server returns error 'autoBounce', *)
  223.                            (*           but still keeps the Msg and sends  *)
  224.                            (*           it to the sysops.                  *)
  225.   tagHdrFill        = 66 + u.tagUser;
  226.                            (* when writing: how much bytes to be reserved  *)
  227.   tagTxtFill        = 67 + u.tagUser;
  228.                            (*               for header and text            *)
  229.   tagNoUpdate       = 69 + u.tagUser;
  230.                            (* data = 0: (default) set 'Old'-Flag when      *)
  231.                            (*           reading or writing                 *)
  232.                            (* data = 1: don't touch 'Old'-Flag             *)
  233.   tagHide           = 70 + u.tagUser;
  234.                            (* for writing:                                 *)
  235.                            (* data = 0: default                            *)
  236.                            (* data = 1: msg only accessible by exporters   *)
  237.                            (* data = 2: msg only accessible by users       *)
  238.   tagCheckHeader    = 71 + u.tagUser;
  239.                            (* data = 0: default                            *)
  240.                            (* data = 1: don't write msg, only check access *)
  241.  
  242.   tagMsgText        = 256 + typeSTRPTR;
  243.   tagFromName       = tagMsgText + fromName;
  244.   tagFromAddr       = tagMsgText + fromAddr;
  245.   tagToName         = tagMsgText + toName;
  246.   tagToAddr         = tagMsgText + toAddr;
  247.   tagMsgID          = tagMsgText + msgID;
  248.   tagCreationDate   = tagMsgText + creationDate;
  249.   tagReceiveDate    = tagMsgText + receiveDate;
  250.   tagRefID          = tagMsgText + refID;
  251.   tagGroup          = tagMsgText + group;
  252.   tagSubject        = tagMsgText + subject;
  253.   tagAttributes     = tagMsgText + attributes;
  254.   tagComments       = tagMsgText + comments;
  255.   tagOrganization   = tagMsgText + organization;
  256.   tagDistribution   = tagMsgText + distribution;
  257.   tagFolder         = tagMsgText + folder;
  258.   tagFidoID         = tagMsgText + fidoID;
  259.   tagMausID         = tagMsgText + mausID;
  260.   tagReplyGroup     = tagMsgText + replyGroup;
  261.   tagReplyName      = tagMsgText + replyName;
  262.   tagReplyAddr      = tagMsgText + replyAddr;
  263.   tagLogicalToName  = tagMsgText + logicalToName;
  264.   tagLogicalToAddr  = tagMsgText + logicalToAddr;
  265.   tagFileName       = tagMsgText + fileName;
  266.   tagRFCMsgNum      = tagMsgText + rfcMsgNum;
  267.  
  268.   tagFidoText       = tagMsgText + fidoText;
  269.   tagErrorText      = tagMsgText + errorText;
  270.   tagNewsreader     = tagMsgText + newsreader;
  271.   tagRfcAttr        = tagMsgText + rfcAttr;
  272.   tagFtnAttr        = tagMsgText + ftnAttr;
  273.   tagZerAttr        = tagMsgText + zerAttr;
  274.   tagMausAttr       = tagMsgText + mausAttr;
  275.  
  276.   tagTempFileName   = tagMsgText + tempFileName;
  277.   tagTextFields     = 513 + u.tagUser;
  278.                             (* datatype: POINTER TO MsgTextFields *)
  279.  
  280.  
  281.   (** tags for ReadMsg() **)
  282.  
  283.   (*  add 'typeVARPAR' for ReadMsg()  *)
  284.   (*  no 'typeVARPAR' for WriteMsg()  *)
  285.  
  286.   tagRMsgNum        =  1 + u.tagUser;
  287.  
  288.   tagRHdrLength     =  2 + u.tagUser + typeVARPAR;
  289.   tagRTxtLength     =  3 + u.tagUser + typeVARPAR;
  290.   tagRMsgDate       =  4 + u.tagUser + typeVARPAR;
  291.   tagRChainUp       =  7 + u.tagUser + typeVARPAR;
  292.   tagRChainDn       =  8 + u.tagUser + typeVARPAR;
  293.   tagRChainLt       =  9 + u.tagUser + typeVARPAR;
  294.   tagRChainRt       = 10 + u.tagUser + typeVARPAR;
  295.   tagRGlobalFlags   = 11 + u.tagUser + typeVARPAR;
  296.   tagRUserFlags     = 12 + u.tagUser + typeVARPAR;
  297.   tagRLoginFlags    = 13 + u.tagUser + typeVARPAR;
  298.   tagRHardLink      = 14 + u.tagUser + typeVARPAR;
  299.   tagRSoftLink      = 15 + u.tagUser + typeVARPAR;
  300.   tagRMsgCDate      = 16 + u.tagUser + typeVARPAR;
  301.  
  302.   tagRDateStyle     = 64 + u.tagUser;
  303.                            (*  style for receiveDate when reading:         *)
  304.                            (* data = 0: no receiveDate                     *)
  305.                            (* data = 1: emulate old-style receiveDate      *)
  306.   tagRIDStyle       = 68 + u.tagUser;
  307.                            (* style for Message-ID                         *)
  308.                            (* data = 0: real Message-ID                    *)
  309.                            (* data = 1: old style dec-number               *)
  310.   tagRNoUpdate      = 69 + u.tagUser;
  311.                            (* data = 0: (default) set 'Old'-Flag when      *)
  312.                            (*           reading or writing                 *)
  313.                            (* data = 1: don't touch 'Old'-Flag             *)
  314.  
  315.   tagRMsgText        =  256 + typeSTRPTR + typeVARPAR + u.tagUser;
  316.   tagRFromName       = tagRMsgText + fromName;
  317.   tagRFromAddr       = tagRMsgText + fromAddr;
  318.   tagRToName         = tagRMsgText + toName;
  319.   tagRToAddr         = tagRMsgText + toAddr;
  320.   tagRMsgID          = tagRMsgText + msgID;
  321.   tagRCreationDate   = tagRMsgText + creationDate;
  322.   tagRReceiveDate    = tagRMsgText + receiveDate;
  323.   tagRRefID          = tagRMsgText + refID;
  324.   tagRGroup          = tagRMsgText + group;
  325.   tagRSubject        = tagRMsgText + subject;
  326.   tagRAttributes     = tagRMsgText + attributes;
  327.   tagRComments       = tagRMsgText + comments;
  328.   tagROrganization   = tagRMsgText + organization;
  329.   tagRDistribution   = tagRMsgText + distribution;
  330.   tagRFolder         = tagRMsgText + folder;
  331.   tagRFidoID         = tagRMsgText + fidoID;
  332.   tagRMausID         = tagRMsgText + mausID;
  333.   tagRReplyGroup     = tagRMsgText + replyGroup;
  334.   tagRReplyName      = tagRMsgText + replyName;
  335.   tagRReplyAddr      = tagRMsgText + replyAddr;
  336.   tagRLogicalToName  = tagRMsgText + logicalToName;
  337.   tagRLogicalToAddr  = tagRMsgText + logicalToAddr;
  338.   tagRFileName       = tagRMsgText + fileName;
  339.   tagRRFCMsgNum      = tagRMsgText + rfcMsgNum;
  340.  
  341.   tagRFidoText       = tagRMsgText + fidoText;
  342.   tagRErrorText      = tagRMsgText + errorText;
  343.   tagRNewsreader     = tagRMsgText + newsreader;
  344.  
  345.   tagRRfcAttr        = tagRMsgText + rfcAttr;
  346.   tagRFtnAttr        = tagRMsgText + ftnAttr;
  347.   tagRZerAttr        = tagRMsgText + zerAttr;
  348.   tagRMausAttr       = tagRMsgText + mausAttr;
  349.  
  350.   tagRTempFileName   = tagRMsgText + tempFileName;
  351.  
  352.   tagRMsgInfo        = 512 + u.tagUser;
  353.                              (* datatype: POINTER TO MessageInfo *)
  354.   tagRTextFields     = tagRMsgInfo + 1;
  355.                              (* datatype: POINTER TO MsgTextFields *)
  356.  
  357.   tagRReadHeader     = tagRMsgInfo + 2;
  358.                              (* read all header-fields *)
  359.   tagRReadAll        = tagRMsgInfo + 3;
  360.                              (* read all text-fields *)
  361.   tagRExtMsgInfo     = tagRMsgInfo + 4;
  362.                              (* read extended MessageInfo*)
  363.  
  364.   tagRNextFileName     = 600 + u.tagUser;
  365.   tagRNextTempFileName = 601 + u.tagUser;
  366.  
  367.  
  368.   (** tags for Select()  **)
  369.  
  370.   tagSelSet         = 1024 + u.tagUser;
  371.                              (* flags to set on selected msgs *)
  372.   tagSelUnset       = tagSelSet +  1;
  373.                              (* flags to clear *)
  374.   tagSelWriteGlobal = tagSelSet +  2;
  375.                              (* change global flags, not user-flags *)
  376.   tagSelWriteLocal  = tagSelSet +  3;
  377.                             (* change login-local flags, not user-flags *)
  378.   tagSelWriteUser   = tagSelSet +  4+typeSTRPTR;
  379.                             (* change other user's flags *)
  380.  
  381.   tagSelStart       = tagSelSet +  8;
  382.                             (* process only msgs AFTER this one *)
  383.   tagSelStop        = tagSelSet + 9;
  384.                             (* process only msgs BEFORE this one *)
  385.  
  386.   (* the following are mutual-exclusiv *)
  387.   (*   use only one of the following operations,   *)
  388.   (*   otherwise unpredictable things may happen!  *)
  389.  
  390.   tagSelReadGlobal  = tagSelSet + 10;
  391.                             (* examine global flags, not user-flags *)
  392.   tagSelReadLocal   = tagSelSet + 11;
  393.                             (* examine login-local flags, not user-flags *)
  394.   tagSelReadUser    = tagSelSet + 12+typeSTRPTR;
  395.                             (* examine other user's flags *)
  396.   tagSelMask        = tagSelSet + 16;
  397.                             (* select msgs, that's flags    *)
  398.   tagSelMatch       = tagSelSet + 17;
  399.                             (*   ANDed with mask equal match *)
  400.   tagSelParent      = tagSelSet + 18;
  401.                             (* examine parent's flags *)
  402.  
  403.   tagSelDate        = tagSelSet + 19;
  404.                             (* select msgs younger than this date *)
  405.  
  406.   tagSelTree        = tagSelSet + 20;
  407.                             (* select whole tree this msg is in *)
  408.  
  409.   tagSelSubTree     = tagSelSet + 21;
  410.                             (* select sub-tree this msg is root of *)
  411.  
  412.   tagSelMsg         = tagSelSet + 22;
  413.                             (* select a msg specified by number *)
  414.  
  415.   tagSelQuick       = tagSelSet + 23;
  416.                             (* quick select enabled *)
  417.   tagSelLink        = tagSelSet + 24;
  418.                             (* 0: don't select links *)
  419.                             (* 1: also select hard links *)
  420.  
  421.   tagSelCDate       = tagSelSet + 25;
  422.                             (* select msgs younger than this cDate *)
  423.  
  424.   tagSelSize        = tagSelSet + 26;
  425.                             (* select msgs with more bytes *)
  426.  
  427.   (* more modifiers for status-selects *)
  428.  
  429.   tagSelMaxCount       = tagSelSet + 27;
  430.                                  (* select at most N msgs *)
  431.                                  (* (backwards)           *)
  432.   tagSelMaxSize        = tagSelSet + 28;
  433.                                  (* sum up msgs' sizes and stop    *)
  434.                                  (* before the sum exceeds N bytes *)
  435.                                  (* (backwards)                    *)
  436.  
  437.  
  438.   (** tags for Search() **)
  439.  
  440.   tagSearchLast         = 2048 + u.tagUser;
  441.                              (* number of LAST msg not to search *)
  442.   tagSearchQuick        = tagSearchLast+ 1;
  443.                              (* quick searches enabled *)
  444.  
  445.   tagSearchGlobal       = tagSearchLast+ 2;
  446.                              (* examine global flags instead of user-flags*)
  447.   tagSearchLocal        = tagSearchLast+ 3;
  448.                              (* examine login-local flags, not user-flags *)
  449.   tagSearchUser         = tagSearchLast+ 4+typeSTRPTR;
  450.                              (* examine other user's flags *)
  451.   tagSearchDirection    = tagSearchLast+ 5;
  452.                              (* set search direction *)
  453.                              (*  0 = default  *)
  454.                              (*  1 = forward  *)
  455.                              (* -1 = backward *)
  456.   tagSearchPattern      = tagSearchLast + 6;
  457.                              (* string in tagMsgText .. tagMsgText+127 is: *)
  458.                              (* 0: no pattern, just a plain string    *)
  459.                              (* 1: an AmigaDOS style pattern          *)
  460.                              (* 2: a pattern, only if it contains     *)
  461.                              (*    wildcards ('auto-detect patterns') *)
  462.  
  463.   tagSearchMask         = tagSearchLast+16;
  464.                              (* search a msg, that's flags   *)
  465.   tagSearchMatch        = tagSearchLast+17;
  466.                              (*   ANDed with mask equal match *)
  467.  
  468.   (* tagMsgText .. tagMsgText+127 are also allowed for searching *)
  469.  
  470.  
  471.   (**  tags for ReadConfig(), WriteConfig()  **)
  472.  
  473.   tagCfgGlobalOnly      = 3072 + u.tagUser;
  474.                              (* read or write only global config,         *)
  475.                              (* thus must not be combined with tagCfgUser *)
  476.   tagCfgName            = tagCfgGlobalOnly+ 1 + typeSTRPTR;
  477.                              (* name of config var to read or write       *)
  478.   tagCfgUser            = tagCfgGlobalOnly+ 2 + typeSTRPTR;
  479.                              (* name of user to read/write locals from/to *)
  480.  
  481.  
  482.   (**  tags for ReadConfig()  **)
  483.  
  484.   tagCfgUserName        = tagCfgGlobalOnly+ 3 + typeSTRPTR;
  485.                              (* alias to get realname from                *)
  486.   tagCfgNextVar         = tagCfgGlobalOnly+ 4 + typeSTRPTR;
  487.                              (* get name of next var                      *)
  488.   tagCfgNextAlias       = tagCfgGlobalOnly+ 5 + typeSTRPTR;
  489.                              (* get name of next Alias                    *)
  490.   tagCfgNextUser        = tagCfgGlobalOnly+ 6 + typeSTRPTR;
  491.                              (* get name of next User                     *)
  492.   tagCfgNextExporter    = tagCfgGlobalOnly+ 7 + typeSTRPTR;
  493.                              (* get name of next Exporter                 *)
  494.   tagCfgNextGroup       = tagCfgGlobalOnly+ 8 + typeSTRPTR;
  495.                              (* get name of next Netgroup                 *)
  496.   tagCfgNextGroupMember = tagCfgGlobalOnly+ 9 + typeSTRPTR;
  497.                              (* get name of next Groupmember              *)
  498.   tagCfgLockVar         = tagCfgGlobalOnly+10;
  499.                              (* 0: no locking                             *)
  500.                              (* 1: lock and read config var               *)
  501.  
  502.   (**  tags for ReadConfig(), WriteConfig()  **)
  503.  
  504.   tagCfgQuoted          = tagCfgGlobalOnly +11;
  505.                              (* 0: no quoting                             *)
  506.                              (* 1: read/write var in quoted format        *)
  507.                              (*    (as used in "ums.config")              *)
  508.  
  509.   (**  tags for WriteConfig()  **)
  510.  
  511.   tagCfgDump            = tagCfgGlobalOnly+16 + typeSTRPTR;
  512.                              (* write current settings to a file *)
  513.   tagCfgData            = tagCfgGlobalOnly+17 + typeSTRPTR;
  514.                              (* data to write to specified var   *)
  515.   tagCfgCreateUser      = tagCfgGlobalOnly+18 + typeSTRPTR;
  516.                              (* create new User                  *)
  517.   tagCfgDeleteUser      = tagCfgGlobalOnly+19 + typeSTRPTR;
  518.                              (* delete user                      *)
  519.   tagCfgCreateAlias     = tagCfgGlobalOnly+20 + typeSTRPTR;
  520.                              (* create new alias                 *)
  521.   tagCfgDeleteAlias     = tagCfgGlobalOnly+21 + typeSTRPTR;
  522.                              (* delete alias                     *)
  523.   tagCfgNetGroup        = tagCfgGlobalOnly+22 + typeSTRPTR;
  524.                              (* create a netgroup                *)
  525.   tagCfgAddNetGroup     = tagCfgGlobalOnly+23 + typeSTRPTR;
  526.                              (* create/add netgroups             *)
  527.   tagCfgDeleteNetGroup  = tagCfgGlobalOnly+24 + typeSTRPTR;
  528.                              (* remove a group from a netgroup   *)
  529.   tagCfgUnlockVar       = tagCfgGlobalOnly+25;
  530.                               (* 0: no locking                   *)
  531.                               (* 1: unlock and write config var  *)
  532.                               (* 2: unlock but don't write       *)
  533.   tagCfgLocal           = tagCfgGlobalOnly + 26;
  534.                               (* create/delete login-local variable *)
  535.   tagCfgCreateSysop     = tagCfgGlobalOnly + 27 + typeSTRPTR;
  536.                               (* create a new sysop               *)
  537.   tagCfgCreateExporter  = tagCfgGlobalOnly + 28 + typeSTRPTR;
  538.                               (* create a new exporter            *)
  539.  
  540.   (**  tags for MatchConfig()  **)
  541.  
  542.   tagMatchGlobalOnly    = 4096 + u.tagUser;
  543.   tagMatchVarname       = tagMatchGlobalOnly+ 1 + typeSTRPTR;
  544.   tagMatchUser          = tagMatchGlobalOnly+ 2 + typeSTRPTR;
  545.   tagMatchString        = tagMatchGlobalOnly+ 3 + typeSTRPTR;
  546.   tagMatchDefault       = tagMatchGlobalOnly+ 4;
  547.  
  548. END UmsD.Lib11
  549.